home *** CD-ROM | disk | FTP | other *** search
/ The Fatted Calf / The Fatted Calf.iso / Applications / GraphicViewers / pCD / Source / Overviews.subproj / OV_Window.m < prev    next >
Text File  |  1993-01-16  |  3KB  |  159 lines

  1.  
  2. #import "OV_Window.h"
  3. #import "../Controller.h"    // class that our "File's Owner" is...
  4.  
  5. @implementation OV_Window
  6.  
  7. - closeOverviewPanel:sender
  8. {
  9.     [ovWindow close];
  10.     return self;
  11. }
  12.  
  13.  
  14. - setImageArray:(ovImageArray *)arrayPtr imageCount:(int)count
  15. {
  16.     id        cell;
  17.     int        startRangeTag, rangeInc, endRangeTag;
  18.     BOOL    enableCell;
  19.     
  20.     ovImageCount = count;
  21.     ovImageIds = arrayPtr;
  22.     ovOpenImageAtSize = is_GlobalPref_TAG;
  23.     ovOpenImageAsResolution = ir_GlobalPref_TAG;
  24.  
  25.     initialOverviewPict = 1;
  26.     startRangeTag = 1;
  27.     rangeInc = [self getMaxImageTag];
  28.     endRangeTag = [self getMaxRangeTag];
  29.     
  30.     //  enable (or disable) options in the OverviewRange matrix
  31.     //  to match the count of images in the array.
  32.     cell = [ovRangeMatrix findCellWithTag:startRangeTag];
  33.     [cell setEnabled:YES];
  34.     [ovRangeMatrix selectCell:cell];
  35.  
  36.     for ( ; startRangeTag <= endRangeTag; startRangeTag += rangeInc) {
  37.     enableCell = YES;
  38.     if (count < startRangeTag) enableCell = NO;
  39.     [[ovRangeMatrix findCellWithTag: startRangeTag] 
  40.                 setEnabled:enableCell];
  41.     }
  42.  
  43.     return self;
  44. }
  45.  
  46.  
  47. - (int)getMaxImageTag
  48. {
  49.     //  There are two cells in the RangeMatrix for *this*
  50.     //      overview window which we do not use
  51.     return [ovImageMatrix cellCount] - 2;
  52. }
  53.  
  54.  
  55. - (int)getMaxRangeTag
  56. {
  57.     return 81;
  58. }
  59.  
  60.  
  61. - getMyButtonImageSize:(NXSize *)aSize;
  62. {
  63.     NXSize    ovButtonSize = {76.6, 50.6};
  64.  
  65.     *aSize = ovButtonSize;
  66.     return self;
  67. }
  68.  
  69.  
  70. - selectOverviewRange:sender
  71. {
  72.     initialOverviewPict = [sender selectedTag];
  73.     if ( initialOverviewPict < 1 ) initialOverviewPict = 1;
  74.     
  75.     [self showOverview];
  76.  
  77.     return self;
  78. }
  79.  
  80.  
  81. - setOpenImageSize:sender
  82. {
  83.     ovOpenImageAtSize = [sender selectedTag];
  84.     return self;
  85. }
  86.  
  87.  
  88. - setOpenImageResolution:sender
  89. {
  90.     ovOpenImageAsResolution = [sender selectedTag];
  91.     return self;
  92. }
  93.  
  94.  
  95. - showOverviewImage:sender
  96. {
  97.     int        pictNumber;
  98.  
  99.     pictNumber = [sender selectedTag];
  100.     if ( pictNumber < 0 ) {
  101.     //  this happens if mouse-up happens outside the button
  102.     //         that the mouse-down was done in...
  103.     return self;
  104.     }
  105.     pictNumber += initialOverviewPict;
  106.     [mainController showImage:pictNumber atSize:ovOpenImageAtSize
  107.                 atRes:ovOpenImageAsResolution];
  108.  
  109.     return self;
  110. }
  111.  
  112.  
  113. - showOverview
  114. {
  115.     id    cell;
  116.     int    cellTag, maxCellTag, pictNumber;
  117.     NXSize    cellButtonSize = {96, 64};
  118.     NXBitmapImageRep    *bm;
  119.     id        image = nil;
  120.     
  121.     maxCellTag = [self getMaxImageTag];
  122.     [self getMyButtonImageSize:&cellButtonSize];
  123.     
  124.     // set all cells to have no images.
  125.     for( cellTag=0; cellTag < maxCellTag; cellTag++ ) {
  126.     cell = [ovImageMatrix findCellWithTag:cellTag];
  127.     [cell setImage:nil];    // must set image before disabling...
  128.     [cell setEnabled:NO];
  129.     }
  130.  
  131.     cellTag = 0;
  132.     while ( cellTag < maxCellTag ) {
  133.     pictNumber = cellTag + initialOverviewPict;
  134.     if ( pictNumber > ovImageCount ) break;
  135.  
  136.     /* setup image with SetDataRetained as YES, so each overview
  137.        panel can set it's own preferred cellButtonSize
  138.     */
  139.     bm = (*ovImageIds)[pictNumber];
  140.     [bm setSize:&cellButtonSize];
  141.     image = [[[NXImage alloc] initSize:&cellButtonSize]
  142.         setDataRetained:YES];
  143.     [image useRepresentation:bm];
  144.  
  145.     cell = [ovImageMatrix findCellWithTag:cellTag];
  146.     [cell setImage: image];
  147.     [cell setEnabled:YES];
  148.     cellTag++;
  149.     }
  150.  
  151.     [ovWindow setFreeWhenClosed:NO];
  152.     [ovWindow makeKeyAndOrderFront:self];
  153.  
  154.     return self;
  155. }
  156.  
  157.  
  158. @end
  159.